<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>essential - Layer Documentation</title>
    <style>
        body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; line-height: 1.6; }
        .header { border-bottom: 2px solid #eee; padding-bottom: 20px; margin-bottom: 30px; }
        .section { margin-bottom: 30px; }
        .badge { display: inline-block; background: #007acc; color: white; padding: 2px 8px; border-radius: 3px; font-size: 12px; margin-right: 10px; }
        .policy-immediate { background: #28a745; color: white; text-decoration: none; }
        .policy-lazy { background: #ffc107; color: #212529; text-decoration: none; }
        .policy-force { background: #dc3545; color: white; text-decoration: none; }
        .policy-skip { background: #6c757d; color: white; text-decoration: none; }
        .policy-immediate:hover { background: #1e7e34; }
        .policy-lazy:hover { background: #e0a800; }
        .policy-force:hover { background: #c82333; }
        .policy-skip:hover { background: #545b62; }
        table { width: 100%; border-collapse: collapse; margin-top: 10px; table-layout: auto; }
        th, td { text-align: left; padding: 8px 12px; border-bottom: 1px solid #ddd; }
        th { background: #f8f9fa; font-weight: 600; }
        td:nth-child(3) {
            width: auto;
        }
        code { background: #f1f3f4; padding: 2px 4px; border-radius: 3px; font-family: 'Monaco', monospace; font-size: 14px; }
        code.long-default { word-break: break-all; white-space: pre-wrap; display: block; min-width: 30ch; }
        .back-link { margin-bottom: 20px; }
        .back-link a { text-decoration: none; color: #007acc; }
        .deps { display: flex; flex-wrap: wrap; gap: 5px; }
        .dep-badge { background: #28a745; color: white; padding: 2px 6px; border-radius: 3px; font-size: 11px; text-decoration: none; }
        .dep-badge:hover { background: #1e7e34; }
        /* Main content headers styling */
        h1, h2, h3, h4, h5, h6 { color: #333; margin-top: 20px; margin-bottom: 10px; }
        /* Companion documentation content styling */
        .companion-content h1, .companion-content h2, .companion-content h3, .companion-content h4, .companion-content h5, .companion-content h6 { color: #333; margin-top: 20px; margin-bottom: 10px; }
        .companion-content p { margin: 10px 0; }
        .companion-content ul, .companion-content ol { margin: 10px 0; padding-left: 30px; }
        .companion-content blockquote { border-left: 4px solid #007acc; padding-left: 15px; margin: 15px 0; color: #666; background: #f8f9fa; padding: 10px 15px; }
        .companion-content pre { background: #f8f9fa; padding: 15px; border-radius: 5px; overflow-x: auto; border-left: 4px solid #007acc; }
        .companion-content table { border: 1px solid #ddd; }
        .companion-content th, .companion-content td { border: 1px solid #ddd; }

        /* AsciiDoc admonition blocks (NOTE, TIP, WARNING, etc.) */
        .admonitionblock {
            margin: 1.5em 0;
            padding: 0.4em 0.6em;
            border-left: 4px solid;
            background: #f8f9fa;
            border-radius: 0 4px 4px 0;
        }

        .admonitionblock .title {
            font-weight: bold;
            text-transform: uppercase;
            font-size: 0.85em;
            margin-bottom: 0.25em;
            letter-spacing: 0.5px;
        }

        .admonitionblock .content {
            margin: 0;
        }

        /* Reduce spacing for paragraphs inside admonitions */
        .admonitionblock p {
            margin: 0.25em 0;
        }

        .admonitionblock p:first-child {
            margin-top: 0;
        }

        .admonitionblock p:last-child {
            margin-bottom: 0;
        }

        /* Specific admonition types */
        .admonitionblock.note {
            border-color: #17a2b8;
            background: #d1ecf1;
        }

        .admonitionblock.note .title {
            color: #0c5460;
        }

        .admonitionblock.tip {
            border-color: #28a745;
            background: #d4edda;
        }

        .admonitionblock.tip .title {
            color: #155724;
        }

        .admonitionblock.important {
            border-color: #ffc107;
            background: #fff3cd;
        }

        .admonitionblock.important .title {
            color: #856404;
        }

        .admonitionblock.warning,
        .admonitionblock.caution {
            border-color: #dc3545;
            background: #f8d7da;
        }

        .admonitionblock.warning .title,
        .admonitionblock.caution .title {
            color: #721c24;
        }
    </style>
</head>
<body>
    <div class="back-link">
        <a href="index.html">← Back to Layer Index</a>
    </div>

    <div class="header">
        <h1>essential</h1>
        <span class="badge">foundation</span>
        <span class="badge">v1.1.0</span>
        <p>Serves as the mandatory foundation for all rpi-image-gen
 builds, and is automatically included in every configuration to provide
 essential build infrastructure.</p>
    </div>

    
    <div class="section">
        <h2>Additional Documentation</h2>
        <div class="companion-content">
            <div class="sect1">
<h2 id="_what_it_provides">What it provides</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The essential layer doesn&#8217;t define variables itself but ensures that every build has access to:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p><strong>Artefact naming</strong></p>
</li>
<li>
<p><strong>Build environment</strong></p>
</li>
<li>
<p><strong>Target configuration</strong></p>
</li>
<li>
<p><strong>Core build infrastructure</strong></p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_architecture_role">Architecture Role</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><strong>Foundation layer</strong>: Sits at the bottom of the dependency hierarchy</p>
</li>
<li>
<p><strong>Mandatory inclusion</strong>: Cannot be excluded from any build</p>
</li>
<li>
<p><strong>Infrastructure aggregation</strong>: Pulls together all essential base layers</p>
</li>
<li>
<p><strong>Dependency management</strong>: Ensures consistent base infrastructure across builds</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_benefits">Benefits</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><strong>Guaranteed infrastructure</strong>: Every build has the required foundation</p>
</li>
<li>
<p><strong>Consistent behaviour</strong>: Same core variables available in every build</p>
</li>
<li>
<p><strong>Future-proof</strong>: Easy to add more essential dependencies as needed</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_usage">Usage</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Users don&#8217;t need to explicitly include this layer - it&#8217;s automatically included by the build system. All other layers can depend on essential to ensure they have access to the core build infrastructure. This ensures that every rpi-image-gen build, whether filesystem-only or full image, has access to the fundamental build tools and configuration needed for successful execution.</p>
</div>
</div>
</div>

        </div>
    </div>
    

    
    <div class="section">
        <h2>Relationships</h2>
        
        <p><strong>Depends on:</strong></p>
        <div class="deps">
            <a href="artefact-base.html" class="dep-badge">artefact-base</a>
            <a href="sys-build-base.html" class="dep-badge">sys-build-base</a>
            <a href="target-config.html" class="dep-badge">target-config</a>
            <a href="locale-base.html" class="dep-badge">locale-base</a>
        </div>
        
        
        
        
    </div>
    

    

    

    <div class="section">
        <h2>Attributes</h2>
        <p><strong>File:</strong> <code>base/core-essential.yaml</code></p>
        
    </div>
</body>
</html>